import { createStore } from 'vuex'
import number from './state/num.state.js'
import userInfo from './state/userInfo.state.js'

export default createStore({
  // 全局的状态初始化
  state: {
    count: 1120,
  },

  // 计算state，获取对应的值
  getters: {
    countStatus(state) {
      return state.count >= 1
    },
  },

  // 更新状态的唯一方法，commit mutations
  mutations: {
    setCount(state, num) {
      state.count = num
    },
  },

  // 可以异步操作，可以返回 promise 更改数据还是传递到 mutations
  actions: {
    setCountPromise(context, num) {
      return new Promise((resolve, reject) => {
        if (num > 100) {
          reject('值不能大于100')
        } else {
          context.commit('setCount', num)
          resolve()
        }
      })
    },
  },

  // 数据比较多，分模块
  modules: {
    number,
    userInfo,
  },
})
